package com.ddz.util;

import com.ddz.model.Poker;

import java.util.List;

public class CommonUtil {

    /**
     * 利用牌的价值，将集合中的牌进行排序
     *
     * @param list 牌集合
     */
    public static void pokerSort(List<Poker> list) {
        // 此时可以改为lambda表达式
        list.sort((o1, o2) -> {
            // 获取花色
            // 1-黑桃 2-红桃 3-梅花 4-方块 5-大小王
            int a1 = Integer.parseInt(o1.getValue().substring(0, 1));
            int a2 = Integer.parseInt(o2.getValue().substring(0, 1));

            // 获取牌上的数字,同时也是牌的价值
            // 1-A ... 11-J 12-Q 13-K
            int b1 = Integer.parseInt(o1.getValue().substring(2));
            int b2 = Integer.parseInt(o2.getValue().substring(2));

            // 计算牌的价值，利用牌的价值进行排序
            // 牌上的数字在3~10之间，价值就是3~10
            // 3:价值3
            //...
            // 10:价值10
            // J:价值11
            // Q:价值12
            // K:价值13
            // A：1 + 20 = 21
            // 2：2 + 30 = 32
            // 小王：1 + 100 = 101
            // 大王：2 + 100 = 102

            // 计算大小王牌的价值
            if (a1 == 5) {
                b1 += 100;
            }
            if (a2 == 5) {
                b2 += 100;
            }

            // 计算A的价值
            if (b1 == 1) {
                b1 += 20;
            }
            if (b2 == 1) {
                b2 += 20;
            }
            // 计算2的价值
            if (b1 == 2) {
                b1 += 30;
            }
            if (b2 == 2) {
                b2 += 30;
            }

            // 倒序排列
            int flag = b1 - b2;

            // 如果牌的价值一样，则按照花色排序
            if (flag == 0) {
                return a2 - a1;
            } else {
                return flag;
            }
        });
    }


}
